【Python】lambda表达式、map函数、reduce函数、filter函数 | 您所在的位置:网站首页 › python lambda return › 【Python】lambda表达式、map函数、reduce函数、filter函数 |
分类:编程知识 04-11 一、lambda表达式简单来说,所以只用一行或者一句话来表达的函数就可以用lambda表达式,也称为lambda函数; 【举个栗子】 def f(x):return x * xf(3)上面的函数的含义是:给函数f传递一个参数x,它会返回x*x;所以我们传递给函数f一个实参3,它就返回3*3,也就是9; 现在我们将上面的代码改成lambda表达式: # 如果将上面的函数转换成lambda表达式 # 具体格式:f = lambda x: x * x # 这里的f是函数名,所以调用该函数的时候就是函数名()print(f(5)) # 这里的f是函数名,所以调用该函数的时候就是函数名()# lambda之后写一个x表示输入; # 输入之后写输出,输入输出之间用英文的冒号:分开 # 冒号之后写 x*x 表示输出的结果是x*x # 所以函数 f = lambda x: x * x 的含义是,输入一个x输出结果为x*x可以看出来结果一样; 那lambda表达式除了输入一个数之外,还可以输入多个数吗? 当然可以! 这里我们输入两个数: f = lambda x, y: x * y print(f(2, 3)) # 函数 f = lambda x, y: x * y 的含义是,输入一个x,y输出结果为x*ylambda表达式还可以放进函数里进行嵌套; 【举个栗子】 实现计算a * x * x + b * x + c; def quar(a, b, c):return lambda x: a * x * x + b * x + cf = quar(1, -1, 2) print(f(5))# f = quar(1, -1, 2)表示给函数quar传递实参,此时a=1,b=-1,c=2 # print(f(5)) 表示输入的x为5; 注意 f = quar(1, -1, 2)只是给函数传递了实参,f(5)才是真正掉调用了该函数 二、Filter函数filter 函数用于过滤元素,将 函数对象(function) 依次作用于 可迭代对象(iterable)的每个元素,将返回值为 True 的 元素组成一个 新的可迭代对象 返回。 (python3 统一返回迭代器;需要通过list函数,set函数将他们转换) 它的使用形式如下: filter(function, iterable) # function 表示一个函数对象 # iterable表示一个可迭代对象 【代码演示】 num_list = [1, 2, 3, 4, 5, 8]def f(x):if x % 2 == 0:return xprint(list(filter(f, num_list)))解释,如果输入的是偶数,返回该值; ![]() 将f函数改成lambda表达式: num_list = [1, 2, 3, 4, 5, 8] print(list(filter(lambda x: x % 2 == 0, num_list)))![]() Map函数通常有两个参数,第一个参数是函数对象,第二个参数就是可迭代对象; Map函数的作用是,将可迭代对象的每一个元素都应用到第一个参数函数中; 在上面这个图片,cook是一个函数对象, 【举个栗子】 num_list = [1, 2, 3, 4, 5] # 一个可迭代对象def duble(x):return x * 2result = map(duble, num_list) # print(result) # 直接输出map函数,输出的是一个迭代器 # 想要正常输出必须将它转换 print(list(result)) # print(result) # 直接输出map函数,输出的是一个迭代器# 函数后面不加括号,表示它是整个函数体,是一个函数对象; # 函数后面加括号(括号中必须传入实参),表示调用该函数的执行结果 reduce() 函数会对参数序列中元素进行累积。 Reduce函数虽然和Map函数的参数形式比较类似,但它们有一些本质的区别;
【举个栗子】 【代码演示】 from functools import reducedef add(x, y):return x + ynum_list = [1, 2, 3, 4, 5] print(reduce(add, num_list))在Python3中,reduce函数已经不是一个内置函数,已经把它调整到一个模块(functools)中了,所以使用reduce函数的时候要进行导包; reduce函数和其余两个函数的区别: 使用map函数,结果是一个map对象;使用filter函数的时候,结果是一个filter对象,我们都需要使用list函数将他们转换为列表; 而ruducr函数,他在add函数里的作用是求和最后生成的是一个和的结果,所以这里就直接输出流15,不需要进行转换。 我们最开始学了lambda表达式,只用一行就可以表达的函数都可以写成lambda表达式,显然,上面的add函数符合标准,我们将它改成lambda表达式: from functools import reducenum_list = [1, 2, 3, 4, 5]result = reduce(lambda x, y: x + y, num_list) print(result)这样写代码更加简洁了,但是写代码也不是越简洁越好。 标签: 函数表达式reducelambdaPythonfilterMap 相关文章: PHP安全有帮助的一些函数 04-13 JSON.parse 函数 (JavaScript) 04-13 python多线程处理数据 04-13 Python中 join() 函数的使用示例讲解 04-13 linux同时运行两个进程 04-13 |
CopyRight 2018-2019 实验室设备网 版权所有 |